import { type App } from 'vue'
import { defineAsyncComponent, type AsyncComponentLoader } from "vue"

// 导入当前目录下所有.vue后缀文件 或者 子级目录下的.vue文件
const componentss = import.meta.glob("./**/index.vue");

// 全局组件引用管理
export default {
  install(app: App) {
    for (let [key, value] of Object.entries(componentss)) {
      // 字符串截取，作用于注册组件使用的组件名称
      let name = key.slice(key.indexOf('/') + 1, key.lastIndexOf("/"));
      // 注册组件
      app.component(name, defineAsyncComponent(value as AsyncComponentLoader));
    }      
  }
}